package ioc

import (
	"fmt"
	"github.com/spf13/viper"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"webook/cronjob/repository/dao"
	"webook/pkg/logger"
)

func InitDB(l logger.LoggerV1) *gorm.DB {
	type Config struct {
		DSN string `yaml:"dsn"`
	}

	c := Config{DSN: "root:root@tcp(localhost:3306)/mysql"}
	err := viper.UnmarshalKey("db", &c)
	if err != nil {
		panic(fmt.Errorf("读取数据库配置失败 %v, 原因 %w", c, err))
	}
	db, err := gorm.Open(mysql.Open(c.DSN), &gorm.Config{})
	if err != nil {
		panic(fmt.Errorf("打开数据库失败, 原因 %w", err))
	}

	err = dao.InitTable(db)
	if err != nil {
		panic(err)
	}
	return db
}
